//
//  NSString+ZLCategory.h
//  ZLCategory
//
//  Created by zhaozl on 2022/3/7.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NSString (ZLCategory)

/// 是否是纯数字
- (BOOL)zl_isPureInt;

/// 是否是float型
- (BOOL)zl_isPureFloat;

/// 是否是中文
- (BOOL)zl_isChinese;

/// 判断是否含有文字
- (BOOL)zl_hasChinese;

/// 字符串替换为星号
- (NSString *)zl_stars;

/// 字符串显示最大3位小数
- (NSString *)zl_max3f;

/// 判断字符串是否合法
- (BOOL)zl_isValidString;

/// 判断字符串是否为手机号
- (BOOL)zl_isValidPhoneNo;

/// 判断字符串是否包含另一字符串
/// @param aString 被包含字符串
- (BOOL)zl_hasString:(NSString *)aString;

/// 版本比较
/// @param localVer 本地版本
- (NSComparisonResult)zl_versionCompare:(NSString *)localVer;

/// 判断字符串是否是当天
/// @param formatStr yyyy-MM-dd
- (BOOL)zl_isTodayWithFormatStr:(NSString *)formatStr;

/// 获取当天日期字符串
/// @param formatStr yyyy-MM-dd
+ (NSString *)zl_getTodayStr:(NSString *)formatStr;

/// 获取指定日期字符串
/// @param date 指定日期
+ (NSString *)zl_stringFromDate:(NSDate *)date;

/// 解决英文显示不全的问题
/// @param font 字体
/// @param rect rect
- (NSString *)zl_getDspStringWithFont:(UIFont *)font dspRect:(CGRect)rect;

/// 校验str 返回非nil 字符串
/// @param str 校验后结果
+ (NSString *)zl_getSafeString:(NSString *)str;

/// 校验str 返回非nil 字符串
/// @param str 校验后结果
NSString *zl_getSafeString(NSString *str);

/// 格式化json字段的值
/// @param value value
+ (NSString *)zl_formatJsonValue:(id)value;

/// 格式化json字段的值strValue
/// @param key key
/// @param dict 字典
+ (NSString *)zl_strValueForKey:(id)key ofDict:(NSDictionary *)dict;

/// 格式化json字段的值numberValue
/// @param key key
/// @param dict 字典
+ (NSNumber *)zl_numberValueForKey:(id)key ofDict:(NSDictionary *)dict;

/// 格式化json字段的值arrayValue
/// @param key key
/// @param dict 字典
+ (NSArray *)zl_arrayValueForKey:(id)key ofDict:(NSDictionary *)dict;

/// 格式化json字段的值dictionaryValue
/// @param key key
/// @param dict 字典
+ (NSDictionary *)zl_dictionaryValueForKey:(id)key ofDict:(NSDictionary *)dict;

/// 校验数字、中文、字母
/// @param text text
+ (BOOL)zl_validateDigitOrLetterOrChinese:(NSString *)text;

/// json字符串转成字典或者数组
- (id)zl_transformFromJsonString;

/// zl_document地址
+(NSString *)zl_documentPath;

/// cachePath
+(NSString *)zl_cachePath;

/// CurDate格式转换
+(NSString *)zl_formatCurDate;

/// CurDay格式转换
+(NSString *)zl_formatCurDay;

/// 获取appVersion
+(NSString *)zl_getAppVer;

/// 去除所有空格
- (NSString *)zl_removeAllSpace;

/// 转换成URL
- (NSURL *)zl_toURL;

/// 是否是Email格式
- (BOOL)zl_isEmail;

/// 是否为空
- (BOOL)zl_isEmpty;

/// 是否是身份证
- (BOOL)zl_isIdCard;

/// HTML特殊字符转换
- (NSString *)zl_escapeHTML;

/// HTML特殊字符转换
- (NSString *)zl_unescapeHTML;

/// 字符串移除HTML
- (NSString *)zl_stringByRemovingHTML;

/// MD5加密
- (NSString *)zl_MD5;

/// URL编码
- (NSString * )zl_URLEncode;

/// 去除空格
-(NSString *)zl_trim;

/// 主要功能：通过文字内容，确定其显示宽度
/// @param font 字体
/// @param size 大小
- (CGSize)zl_sizeWithFont:(UIFont *)font maxSize:(CGSize)size;

/// 主要功能：通过文字内容，字体，富文本字典，确定其宽高
/// @param font 字体
/// @param attributes 富文本字典
/// @param size 大小
- (CGSize)zl_sizeWithFont:(UIFont *)font attributes:(NSDictionary *)attributes maxSize:(CGSize)size;

@end

NS_ASSUME_NONNULL_END
